﻿///////////////////////////////////////////////////////////////////////////////
// File:        EchoServerStatics.h
// Author:      671643387@qq.com
// Date:        2016年1月14日 下午3:50:34
// Description:
///////////////////////////////////////////////////////////////////////////////

#ifndef ECHO_ECHOSERVERSTATICS_H_
#define ECHO_ECHOSERVERSTATICS_H_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <iostream>
#include <cstdint>
#include <boost/atomic.hpp>

class EchoServerStatics
{
public:
    EchoServerStatics(void)
        : pktRecv_(0)
        , pktSend_(0)
        , bytsRecv_(0)
        , bytsSend_(0)
    {

    }

    ~EchoServerStatics(void)
    {

    }

public:
    void EmitRecv(::std::uint32_t bytsRecv)
    {
        bytsRecv_ += bytsRecv;
        ++pktRecv_;
    }

    void EmitSend(void)
    {
        ++pktSend_;
    }

    void DumpAndReset(void)
    {
        std::cout << "//------------" << std::endl;
        std::cout << "RPPS: " << pktRecv_ << std::endl;
        std::cout << "SPPS: " << pktSend_ << std::endl;

        std::cout << "RBPS: " << bytsRecv_ << std::endl;

        pktRecv_ = 0;
        pktSend_ = 0;
        bytsRecv_ = 0;
    }

private:
    ::boost::atomic_uint32_t pktRecv_;
    ::boost::atomic_uint32_t pktSend_;

    ::boost::atomic_uint64_t bytsRecv_;
    ::boost::atomic_uint64_t bytsSend_;
};

#endif /* ECHO_ECHOSERVERSTATICS_H_ */
